package com.hymall.service.admin;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hymall.bean.MarketAd;
import com.hymall.bean.MarketAdExample;
import com.hymall.bean.common.BasePageInfo;
import com.hymall.bean.common.CommonData;
import com.hymall.mapper.MarketAdMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

/**
 * @author 长平居士 - rolfcui@outlook.com
 * @description 推广管理 -> 广告模块 服务实现类
 * @date 2022/7/16 19:36
 */
@Service
public class AdServiceImpl implements AdService {

    @Autowired
    MarketAdMapper marketAdMapper;

    @Override
    /**
     * @author 长平居士
     * @description 广告模块，显示全部广告
     * @date 2022/7/17 11:48
     *
     * @param name 广告标题
     * @param content 广告内容
     * @param info
     * @return com.hymall.bean.common.CommonData<com.hymall.bean.MarketAd>
     */
    public CommonData<MarketAd> query(String name, String content, BasePageInfo info) {
        PageHelper.startPage(info.getPage(), info.getLimit());

        MarketAdExample example = new MarketAdExample();
        MarketAdExample.Criteria criteria = example.createCriteria();
        example.setOrderByClause(info.getSort() + " " + info.getOrder());
        if (name != null && !"".equals(name)) {
            criteria.andNameLike("%" + name + "%");
        }
        if (content != null && !"".equals(content)) {
            criteria.andContentLike("%" + content + "%");
        }

        List<MarketAd> ads = marketAdMapper.selectByExample(example);
        PageInfo<MarketAd> pageInfo = new PageInfo<>(ads);
        return CommonData.data(pageInfo);
    }

    @Override
    /**
     * @author 长平居士
     * @description 广告模块 插入新信息
     * @date 2022/7/18 16:17
     *
     * @param adItem
     * @return void
     */
    public void create(MarketAd adItem) {
        if (adItem.getLink() == null) {
            adItem.setLink("");
        }
        adItem.setDeleted(false);
        adItem.setAddTime(new Date());
        adItem.setUpdateTime(new Date());
        marketAdMapper.insert(adItem);
    }

    @Override
    /**
     * @author 长平居士
     * @description 广告模块 根据传入类的 id 更新数据
     * @date 2022/7/17 21:07
     *
     * @param marketAd
     * @return void
     */
    public void updateByClass(MarketAd marketAd) {
        marketAdMapper.updateByPrimaryKey(marketAd);
    }

    @Override
    /**
     * @author 长平居士
     * @description 广告模块 根据 id 删除数据
     * @date 2022/7/17 21:08
     *
     * @param id
     * @return void
     */
    public void delById(Integer id) {
        marketAdMapper.deleteByPrimaryKey(id);
    }
}
